Pursuant to the MPEG-2 Advanced Audio Coding (MPEG-2 AAC) standard, audio signals are sampled frequencies starting from 8 kHz to 96 kHz. The samples are grouped into consecutive frames of 1024 samples. The frames are grouped into windows that comprise 2048 samples. However, each window has a 50% overlap with the previous window. Accordingly, the first 1024 samples of a window are the same as the last 1024 samples of the previous window. A window function is applied to each window, resulting in sets of 2048 windowed samples. The modified discrete cosine transformation (MDCT) is applied to each set of windowed samples, resulting in 1024 frequency coefficients. The frequency coefficients are then quantized and coded for transmission.
The first step in decoding is to establish the frame synchronization. Once the frame synchronization is found, the AAC bitstream is demultiplexed. This includes Huffman decoding, scale factor decoding, and the decoding of the side information used in tools such as mono/stereo, intensity stereo, TNS, and the filter bank. The spectral samples are decoded and copied to the output buffer in a samples fashion. After Huffman decoding, each coefficient must be inverse quantizated by a 4/3 power nonlinearity and then scaled by the quantizer step size. Finally, the Inverse MDCT (IMDCT) transforms the spectral coefficients into time domain. After the IMDCT transform, the output samples are windowed, overlapped, and added for generating the final pulse code modulate (PCM) samples.
As each block is encoded independently, the effect of quantization noise is different in different blocks. This results in a large noise at the block boundaries when the blocks are decoded. The MDCT is a linear orthogonal lapped transform, based on the idea of time domain aliasing cancellation (TDAC). Though the MDCT is 50% overlapped, a sequence data after MDCT has the same number of coefficients as samples before the transform (after overlap-and-add). This means that a single block of IMDCT data does not correspond to the original block on which the MDCT was performed. When subsequent blocks of inverse transformed data are added using 50% overlap, the errors introduced by the transform cancels out the TDAC and effectively removes an otherwise easily detectable blocking artifact between transform blocks.
The IMDCT output is mapped to the full spectrum for subsequent use in the window overlap add to implement the window overlap add. For a window sequence of length 2048, the memory includes a present frame buffer of 2048 samples, previous frame buffer of 1024, and a window coefficient buffer of 2048 coefficients. The implementation of the window overlap add is computationally intensive.
Further limitations and disadvantages of conventional and traditional systems will become apparent to one of skill in the art through comparison of such systems with the invention as set forth in the remainder of the present application with reference to the drawings.